home *** CD-ROM | disk | FTP | other *** search
/ Aminet 28 / Aminet 28 (1998)(GTI - Schatztruhe)[!][Dec 1998].iso / Aminet / mus / midi / KaraoFIX.lha / KaraoFIX.Bak / KaraoFIX.amosSourceCode
AMOS Source Code  |  1997-09-08  |  3KB  |  158 lines

  1. '
  2. ' KaraoFIX 1.0 
  3. '
  4. ' Source code for AMOS PRO 
  5.  
  6. COM$=Command Line$
  7. Screen Open 0,640,220,8,Hires
  8. Amos To Front 
  9. C_PRINT[" KaraoFIX 1.0 - By Ninjaw P.B."]
  10. C_PRINT[" ninjaw@chez.com"]
  11. C_PRINT[" http://www.chez.com/ninjaw"]
  12. C_PRINT[" This program fix some MIDI files in"]
  13. C_PRINT[" .KAR format that are not played"]
  14. C_PRINT[" correctly by MidiPlay."]
  15. C_PRINT[""]
  16.  
  17. If COM$=""
  18.    C_PRINT["Usage: KaraoFIX <file>"]
  19.    C_PRINT["   or: KaraoFIX <directory> +'/' or ':'"]
  20.    Goto FIN
  21. Else 
  22.    If Right$(COM$,1)="/" or Right$(COM$,1)=":"
  23.       _MODE=True
  24.       Goto MO
  25.    End If 
  26.    If Not Exist(COM$)
  27.       C_PRINT["Cannot find file:"]
  28.       C_PRINT[COM$]
  29.       Goto FIN
  30.    End If 
  31. End If 
  32. Goto OP
  33.  
  34. MO:
  35. Dir$=COM$
  36. Set Dir 100
  37. COM$=Dir First$("") : FO
  38. If Left$(COM$,1)="*"
  39.    Goto MO2
  40. End If 
  41. If COM$=""
  42.    C_PRINT["DIRECTORY SCANNED"]
  43.    _MODE=False
  44.    _MODO=True
  45.    Goto FIN
  46. End If 
  47. Goto OP
  48. MO2:
  49. COM$=Dir Next$ : FO
  50. If Left$(COM$,1)="*"
  51.    Goto MO2
  52. End If 
  53. If COM$=""
  54.    C_PRINT["DIRECTORY SCANNED"]
  55.    _MODE=False
  56.    _MODO=True
  57.    Goto FIN
  58. End If 
  59.  
  60. OP:
  61. Print COM$
  62. Open In 1,COM$ : LONG=Lof(1) : MTHD$=Input$(1,4) : Close 1
  63. If MTHD$<>"MThd"
  64.    If Not _MODE
  65.       C_PRINT["Not a Midifile so not a karaoke"]
  66.    End If 
  67.    Inc NOMIDI
  68.    Goto FIN
  69. End If 
  70. Reserve As Work 1,LONG
  71. Bload COM$,Start(1)
  72. S=Hunt(Start(1) To Start(1)+Length(1),"MIDI KARAOKE FILE")
  73. If S=0
  74.    If Not _MODE
  75.       C_PRINT["Midifile not in karaoke format"]
  76.    End If 
  77.    Inc NOKAR
  78.    Goto FIN
  79. End If 
  80. If Asc(Peek$(S-1,1))<>$20
  81.    If Not _MODE
  82.       C_PRINT["Karaoke file correct"]
  83.    End If 
  84.    Inc CORRECT
  85. Else 
  86.    C_PRINT["FOUND A PROBLEM IN THIS KARAOKE FILE!!"]
  87.    If _MODE
  88.       Print COM$
  89.    End If 
  90.    While Asc(Peek$(S-1,1))=20
  91.       Dec S
  92.    Wend 
  93.    Poke$ S,"MIDI KARAOKE FILE "
  94.    C_PRINT["Saving fixed file..."]
  95.    Bsave COM$,Start(1) To Start(1)+Length(1)
  96.    Inc PROB
  97. End If 
  98.  
  99. FIN:
  100. If _MODE
  101.    Goto MO2
  102. End If 
  103. If _MODO
  104.    If NOMIDI
  105.       Print NOMIDI;" file(s) not a midifile"
  106.    End If 
  107.    If NOKAR
  108.       Print NOKAR;" midifile(s) not karaoke"
  109.    End If 
  110.    If CORRECT
  111.       Print CORRECT;" KAR file(s) correct"
  112.    End If 
  113.    If PROB
  114.       Print PROB;" file(s) fixed!"
  115.    End If 
  116. End If 
  117.  
  118. Print "PRESS ANY KEY TO LEAVE WINDOW"
  119. Wait Key 
  120. End 
  121.  
  122. Procedure FO
  123.    
  124.    ' Cette proc met en forme une chaine tir�e d'un dir first$ 
  125.    ' (Vire le "     16506" ï¿½ la fin)
  126.    
  127.    Shared COM$
  128.    COM$=Left$(COM$,80)
  129.    COM$=Mid$(COM$,2)
  130.    For CON=80 To 1 Step -1
  131.       If Right$(COM$,1)=" "
  132.          COM$=Mid$(COM$,0,CON)
  133.       Else 
  134.          Exit 
  135.       End If 
  136.    Next 
  137.    
  138. End Proc
  139. Procedure C_PRINT[A$]
  140.    
  141.    ' Ecrit dans le cli courant
  142.    
  143. Print A$
  144. Pop Proc
  145.    If Prg State>=0
  146.       Print A$
  147.    Else 
  148.       HANDLE=Doscall(-60)
  149.       If HANDLE
  150.          A$=A$+Chr$(10)
  151.          Dreg(1)=HANDLE
  152.          Dreg(2)=Varptr(A$)
  153.          Dreg(3)=Len(A$)
  154.          F=Doscall(-48)
  155.       End If 
  156.    End If 
  157.    
  158. End Proc